#ifndef DVB_H_INC
#define DVB_H_INC

#include "tfc_def.h"
#include <stdbool.h>
#include <stdint.h>

#ifndef DVB_TYPE
#define DVB_TYPE 0x0002
typedef uint32_t DVB;
typedef long IDR;
typedef uint16_t BCD;
#endif

#define NEGABIT		0x80000000		
#define EODVB		0x80000000		
#define IDRRANGE	10000000		
#define MAXIDR		(IDRRANGE-1)
#define MINIDR		(1-IDRRANGE)
#define DVB_BUF_SIZE	10				

#ifdef __cplusplus
extern "C"
{
#endif
	
bool DvbIsPositive(DVB dv);
bool DvbIsInteger(DVB dv);
int  DotOfDvb(DVB dv);
long Dvb2Int(DVB dv);
DVB  Int2Dvb(long iv);
float Dvb2Float(DVB dv);
DVB  Float2Dvb(float fv, int dot);
DVB  FreeFloat2Dvb(float fv);
DVB  ValidFloat2Dvb(float fv, int wd);
void Dvb2String(char strBuf[], DVB dv);
DVB  String2Dvb(const char *str);

DVB  DvbAbs(DVB dv);
DVB	 DvbNega(DVB dv);
DVB  DvbReform(DVB dv, int dot);
int  DvbCompare(DVB dv1, DVB dv2);
DVB  DvbMin(DVB dv1, DVB dv2);		
DVB  DvbMax(DVB dv1, DVB dv2);

IDR  Float2Idr(float fv, int dot);
float Idr2Float(IDR idr, int dot);
IDR  Dvb2Idr(DVB dv);
DVB  Idr2Dvb(IDR idr, int dot);
DVB  DvbInc(DVB dv, IDR idr);
IDR  DvbMinus2Idr(DVB dv1, DVB dv2);

BCD  Int2Bcd(int iv);
int  Bcd2Int(BCD bcd);
void Bcd2String(char strBuf[], BCD bcd);
BCD  String2Bcd(const char *str);

#ifdef __cplusplus
}
#endif

#endif
